#include <iostream>
#include <vector>
#include <string>
// 使用迭代器求相邻元素的和
int main()
{
    std::vector<int> vInt;
    int iVal;
    std::cout << "请输入一组数字: " << std::endl;
    while(std::cin >> iVal)
    {
        vInt.push_back(iVal);
    }
    if(vInt.cbegin() == vInt.cend())
    {
        std::cout << "没有任何元素。" << std::endl;
        return -1;
    }
    std::cout << "相邻两项的和依次是：" << std::endl;
    // 利用auto推断it的类型
    for(auto it = vInt.cbegin(); it != vInt.cend() - 1; it++)
    {
        // 求相邻两项的和
        std::cout << (*it + *(++it)) << " "; 
        // 每行输出5个数字
        if((it - vInt.cbegin() + 1) % 5 == 0)
        {
            std::cout << std::endl;
        }
    }
    // 如果元素个数是奇数,单独处理最后一个元素
    if(vInt.size() % 2 != 0)
    {
        std::cout << *(vInt.cend() - 1);
    }
   
    std::cout << "首尾两项的和依次是： " << std::endl;
    auto beg = vInt.cbegin();
    auto end = vInt.cend();
    for(auto it = beg; it != beg + (end - beg)/2; it++)
    {
        // 求首尾两项的和
        std::cout << (*it + *(beg + (end - it) - 1)) << " ";
        // 每行输出5个数字
        if((it - beg + 1) % 5 == 0)
        {
            std::cout << std::endl;
        }
    }
    // 如果元素个数是奇数,单独处理最后一个元素
    if(vInt.size() % 2 != 0)
    {
        std::cout << *(beg + (end - beg) / 2);
    }

    return 0;
}